iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0

「上次的遞迴,說起來還有點難度吧?」

「對呀⋯⋯回去我又重複看了兩題的作法好幾次,還是需要一點時間理解」曉欣無力的說。

「夏天姐,說起來,之前我有聽其他工程師說過,遞迴的效率其實不好,那是不是我們就不用太認真學遞迴的寫法了?」

「『遞迴的效率其實不好』這個觀念不太對喔。

因為背後的實作方式,確實在撰寫遞迴時,要注意的地方會比較多,比方說遞迴的深度會需要控制。但是並不能說這個寫法就不好,我們要完全地避免使用這個撰寫方式。

程式的效能不好,應該是要去針對效能不好的原因,去進行改進以及調整。而不是說就完全地避免某種寫法。」

「今天先休息一下吧,我們來寫一些簡單的題目」夏天打開 1929. Concatenation of Array

「這題我會!《Kotlin Collection全方位解析攻略 : 精通原理及實戰,寫出流暢好維護的程式》 有提到這件事!」曉欣搶著寫

class Solution {
    fun getConcatenation(nums: IntArray) = 
        nums + nums
}

「Kotlin 真的是一個好方便的語言」雖然已經說過很多次,菁菁還是不禁感嘆道。

夏天又打開了一題 1480. Running Sum of 1d Array

這題稍微複雜了一點點,兩人討論了一下,寫出答案

class Solution {
    fun runningSum(nums: IntArray): IntArray {
        val result = IntArray(nums.size)
        result[0] = nums[0]
        for (i in 1 until nums.size) {
            result[i] = nums[i] + result[i - 1]
        }
        return result
    }
}

看到兩人答題這麼順利,夏天又開啟了一題 1672. Richest Customer Wealth

「這題就讓我來吧」菁菁邊說邊寫出

class Solution {
    fun maximumWealth(accounts: Array<IntArray>) = 
        accounts.map { it.sum() }.max()
}

「這邊的 map 是怎麼回事呀」曉欣不理解的問

「很簡單的,我寫給你看」菁菁用曉欣準備好的紙筆,開始試著畫圖解釋 map 的概念。

「今天真是一個好日子」夏天邊喝著冰美式邊看著熱烈討論的兩人,不禁感嘆。


上一篇
Day 11:尾遞迴的觀念:70. Climbing Stairs
下一篇
Day 13:樹狀結構的第一題:100. Same Tree
系列文
Kotlin 程式人:Leetcode 意外旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言